# 序列类型-通用操作
# 切片操作
# 作用：取出序列中一部分（一段）数据【数据类型不变】，以字符串、列表、元组为主
# 语法格式： 变量名[start:end:step]
# start：切片开始下标
# end：切片结束下标
# step：切片步长【可选】
# 注意事项：
# 下标: "顾头不顾尾"
# start：开始下标(包含)；end：结束下标(不包含)；step：截取步长,默认为1,可以省略
# start,end,step可以省略不写,支持正向索引和逆向索引
# 正向索引：步长为正数，从左向右
# 负向索引：步长为负数，从右向左
# 作用：按照指定要求获取一段数据
# 定义非空字符串
name = "abcdefgh"
# 获取cde
# print(name[2:5])
# print(name[2:5:1])
# print(name[‐6:‐3])
# print(name[‐6:‐3:1])
# 获取defgh的字符
# print(name[3:8])
# print(name[3:]) # 结束下标不写，默认从开始下标到结尾
# print(name[‐5:])
# 获取abc的字符
# 获取ace的字符
# print(name[0:5:2]) # 取出0 、2 、4下标对应元素
# print(name[:5:2]) # 开始下标不写，默认从第一个元素开始
# # 获取hgfedcba
# print(name[::‐1])

# 序列长度
# 作用：计算序列的长度（统计元素的个数）
# 语法格式： len(变量名)

info = "abcdefgh"
info1 = "Hello Python"
# 统计字符元素个数（长度）
print(len(info)) # 8
print(len(info1)) # 12
# 定义非空列表
info2 = [11, "aa", 1.88, (1, 2, 3), ["aa", "bb"]]
print(len(info2)) # 5
# 定义非空元组
info3 = (11, "aa", 1.88)
print(len(info3)) # 3
# 定义非空字典
info4 = {"name": "tom", "age": 18, "gender": "男"}
print(len(info4)) # 3

# 1.字典元素统计按照键值对统计

# 清空序列
# 作用：清空序列中所有数据，以列表和字典为主（支持可变数据类型清空）
# 语法格式： 变量名.clear()
info2 = [11, "aa", 1.88, (1, 2, 3), ["aa", "bb"]]
# 清空列表数据
info2.clear()
# 查看原有列表
print(info2)
info4 = {"name": "tom", "age": 18, "gender": "男"}
# 清空字典数据
info4.clear()
# 查看原有字典
print(info4)
# 结论：只针对可变数据类型可以做清空

